﻿#define _CRT_SECURE_NO_WARNINGS   //忽略localtime的不安全警告，使代码能够正常编译
#include <iostream>
#include <ctime>
#include <iomanip>
#include <sstream>
#include <chrono>



void someFunction() {
	// 模拟一些操作
	for (size_t i = 0; i < 9999999; i++)
	{

	}
}


int main()
{


	//获取当前时间（以秒为单位，从1970年1月1日开始计算）：
	time_t t = time(NULL);


	//将 time_t 类型的时间转换为 tm 结构体：
	struct tm* tm = std::localtime(&t);

	//将 time_t 类型的时间转换为协调世界时（UTC）的 tm 结构体：
	struct tm* tm_utc = gmtime(&t);

	//格式化时间：
	char buffer[80];
	strftime(buffer, 80, "%Y-%m-%d %H:%M:%S", tm);



	// 输出当前时间
	std::cout << "Current local time: " << buffer << std::endl;

	// 将当前时间转换为UTC时间
	struct tm* utc_tm = gmtime(&t);

	// 格式化UTC时间
	strftime(buffer, 80, "%Y-%m-%d %H:%M:%S", utc_tm);

	// 输出UTC时间
	std::cout << "Current UTC time: " << buffer << std::endl;


	/*C++11 引入了 <chrono> 库，这是一个用于处理时间和日期的库。
	它提供了一套丰富的工具来测量时间间隔、执行时间点的计算以及处理日期和时间。
	<chrono> 库是 C++ 标准库中处理时间相关操作的核心部分。*/

	//统计耗时
	auto start = std::chrono::high_resolution_clock::now();
	someFunction();
	auto end = std::chrono::high_resolution_clock::now();

	auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
	std::cout << "Function took " << duration.count() << " milliseconds to execute." << std::endl;

	//处理时间日期
	auto now = std::chrono::system_clock::now();
	std::time_t now_c = std::chrono::system_clock::to_time_t(now);
	std::cout << "Current date and time: " << std::ctime(&now_c);


	//格式化日期和时间
	std::cout << std::put_time(std::localtime(&now_c), "%Y-%m-%d %H:%M:%S");




}
